TOP

Fonctions SQL NULL

Fonctions SQL IFNULL(), ISNULL(), COALESCE() et NVL()


Regardons le tableau suivant "Products" ("Produits") :

ProductIDProductNameSupplierIDCategoryIDUnitPrice
1Chais1110 boxes x 20 bags18.00
2Chang1124 - 12 oz bottles19.00
3Aniseed Syrup1212 - 550 ml bottles10.00
4Chef Anton's Cajun Seasoning2248 - 6 oz jars22.00
5Chef Anton's Gumbo Mix2236 boxes21.35

Supposons que la colonne « UnitsOnOrder » soit facultative et puisse contenir la valeur NULL.

Considérez l'instruction suivante SELECT :

SELECT ProductName, UnitPrice * (UnitsInStock + UnitsOnOrder)
FROM Products

Dans l'exemple ci-dessus, si l'une des valeurs "UnitsOnOrder" est égale à NULL, le résultat sera NULL.

Décision

MySQL

La fonction MySQL IFNULL() permet de renvoyer une valeur alternative si l'expression est égale à NULL :

SELECT ProductName, UnitPrice * (UnitsInStock + IFNULL(UnitsOnOrder, 0))
FROM Products

ou on peut utiliser la fonction COALESCE(), par exemple :

SELECT ProductName, UnitPrice * (UnitsInStock + COALESCE(UnitsOnOrder, 0))
FROM Products

SQL Server

La fonction SQL Server ISNULL() permet de renvoyer une valeur alternative si l'expression a la valeur NULL :

SELECT ProductName, UnitPrice * (UnitsInStock + ISNULL(UnitsOnOrder, 0))
FROM Products

ou on peut utiliser la fonction COALESCE(), par exemple :

SELECT ProductName, UnitPrice * (UnitsInStock + COALESCE(UnitsOnOrder, 0))
FROM Products

MS Access

La fonction MS Access IsNull() renvoie TRUE (-1) si l'expression est nulle, sinon FALSE (0) :

SELECT ProductName, UnitPrice * (UnitsInStock + IIF(IsNull(UnitsOnOrder), 0, UnitsOnOrder))
FROM Products

Oracle

La fonction Oracle NVL() obtient le même résultat :

SELECT ProductName, UnitPrice * (UnitsInStock + NVL(UnitsOnOrder, 0))
FROM Products

ou on peut utiliser la fonction COALESCE(), par exemple :

SELECT ProductName, UnitPrice * (UnitsInStock + COALESCE(UnitsOnOrder, 0))
FROM Products